1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */ 
28 
29 module derelict.glib.ghook;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 
34 extern (C):
35 
36 alias _GHook GHook;
37 alias _GHookList GHookList;
38 alias int function (_GHook*, _GHook*) GHookCompareFunc;
39 alias int function (_GHook*, void*) GHookFindFunc;
40 alias void function (_GHook*, void*) GHookMarshaller;
41 alias int function (_GHook*, void*) GHookCheckMarshaller;
42 alias void function (void*) GHookFunc;
43 alias int function (void*) GHookCheckFunc;
44 alias void function (_GHookList*, _GHook*) GHookFinalizeFunc;
45 alias _Anonymous_0 GHookFlagMask;
46 
47 enum _Anonymous_0
48 {
49 	G_HOOK_FLAG_ACTIVE = 1,
50 	G_HOOK_FLAG_IN_CALL = 2,
51 	G_HOOK_FLAG_MASK = 15
52 }
53 
54 struct _GHookList
55 {
56 	gulong seq_id;
57 	guint hook_size;
58 	guint is_setup;
59 	GHook* hooks;
60 	gpointer dummy3;
61 	GHookFinalizeFunc finalize_hook;
62 	gpointer[2] dummy;
63 }
64 
65 struct _GHook
66 {
67 	gpointer data;
68 	GHook* next;
69 	GHook* prev;
70 	guint ref_count;
71 	gulong hook_id;
72 	guint flags;
73 	gpointer func;
74 	GDestroyNotify destroy;
75 }
76 
77 version(Derelict_Link_Static)
78 {
79     extern( C ) nothrow 
80     {
81         void g_hook_list_init(GHookList* hook_list, guint hook_size);
82         void g_hook_list_clear(GHookList* hook_list);
83         GHook* g_hook_alloc(GHookList* hook_list);
84         void g_hook_free(GHookList* hook_list, GHook* hook);
85         GHook* g_hook_ref(GHookList* hook_list, GHook* hook);
86         void g_hook_unref(GHookList* hook_list, GHook* hook);
87         gboolean g_hook_destroy(GHookList* hook_list, gulong hook_id);
88         void g_hook_destroy_link(GHookList* hook_list, GHook* hook);
89         void g_hook_prepend(GHookList* hook_list, GHook* hook);
90         void g_hook_insert_before(GHookList* hook_list, GHook* sibling, GHook* hook);
91         void g_hook_insert_sorted(GHookList* hook_list, GHook* hook, GHookCompareFunc func);
92         GHook* g_hook_get(GHookList* hook_list, gulong hook_id);
93         GHook* g_hook_find(GHookList* hook_list, gboolean need_valids, GHookFindFunc func, gpointer data);
94         GHook* g_hook_find_data(GHookList* hook_list, gboolean need_valids, gpointer data);
95         GHook* g_hook_find_func(GHookList* hook_list, gboolean need_valids, gpointer func);
96         GHook* g_hook_find_func_data(GHookList* hook_list, gboolean need_valids, gpointer func, gpointer data);
97         GHook* g_hook_first_valid(GHookList* hook_list, gboolean may_be_in_call);
98         GHook* g_hook_next_valid(GHookList* hook_list, GHook* hook, gboolean may_be_in_call);
99         gint g_hook_compare_ids(GHook* new_hook, GHook* sibling);
100         void g_hook_list_invoke(GHookList* hook_list, gboolean may_recurse);
101         void g_hook_list_invoke_check(GHookList* hook_list, gboolean may_recurse);
102         void g_hook_list_marshal(GHookList* hook_list, gboolean may_recurse, GHookMarshaller marshaller, gpointer marshal_data);
103         void g_hook_list_marshal_check(GHookList* hook_list, gboolean may_recurse, GHookCheckMarshaller marshaller, gpointer marshal_data);
104     }
105 }
106 else
107 {
108     extern( C ) nothrow 
109     {
110         alias da_g_hook_list_init = void function(GHookList* hook_list, guint hook_size);																					
111         alias da_g_hook_list_clear = void function(GHookList* hook_list);																									
112         alias da_g_hook_alloc = GHook* function(GHookList* hook_list);																										
113         alias da_g_hook_free = void function(GHookList* hook_list, GHook* hook);																							
114         alias da_g_hook_ref = GHook* function(GHookList* hook_list, GHook* hook);																							
115         alias da_g_hook_unref = void function(GHookList* hook_list, GHook* hook);																							
116         alias da_g_hook_destroy = gboolean function(GHookList* hook_list, gulong hook_id);																					
117         alias da_g_hook_destroy_link = void function(GHookList* hook_list, GHook* hook);																					
118         alias da_g_hook_prepend = void function(GHookList* hook_list, GHook* hook);																							
119         alias da_g_hook_insert_before = void function(GHookList* hook_list, GHook* sibling, GHook* hook);																	
120         alias da_g_hook_insert_sorted = void function(GHookList* hook_list, GHook* hook, GHookCompareFunc func);															
121         alias da_g_hook_get = GHook* function(GHookList* hook_list, gulong hook_id);																						
122         alias da_g_hook_find = GHook* function(GHookList* hook_list, gboolean need_valids, GHookFindFunc func, gpointer data);												
123         alias da_g_hook_find_data = GHook* function(GHookList* hook_list, gboolean need_valids, gpointer data);																
124         alias da_g_hook_find_func = GHook* function(GHookList* hook_list, gboolean need_valids, gpointer func);																
125         alias da_g_hook_find_func_data = GHook* function(GHookList* hook_list, gboolean need_valids, gpointer func, gpointer data);											
126         alias da_g_hook_first_valid = GHook* function(GHookList* hook_list, gboolean may_be_in_call);																		
127         alias da_g_hook_next_valid = GHook* function(GHookList* hook_list, GHook* hook, gboolean may_be_in_call);															
128         alias da_g_hook_compare_ids = gint function(GHook* new_hook, GHook* sibling);																						
129         alias da_g_hook_list_invoke = void function(GHookList* hook_list, gboolean may_recurse);																			
130         alias da_g_hook_list_invoke_check = void function(GHookList* hook_list, gboolean may_recurse);																		
131         alias da_g_hook_list_marshal = void function(GHookList* hook_list, gboolean may_recurse, GHookMarshaller marshaller, gpointer marshal_data);						
132         alias da_g_hook_list_marshal_check = void function(GHookList* hook_list, gboolean may_recurse, GHookCheckMarshaller marshaller, gpointer marshal_data);				
133     }
134 
135     __gshared
136     {
137         da_g_hook_list_init g_hook_list_init; 
138         da_g_hook_list_clear g_hook_list_clear; 
139         da_g_hook_alloc g_hook_alloc; 
140         da_g_hook_free g_hook_free; 
141         da_g_hook_ref g_hook_ref; 
142         da_g_hook_unref g_hook_unref; 
143         da_g_hook_destroy g_hook_destroy; 
144         da_g_hook_destroy_link g_hook_destroy_link; 
145         da_g_hook_prepend g_hook_prepend; 
146         da_g_hook_insert_before g_hook_insert_before; 
147         da_g_hook_insert_sorted g_hook_insert_sorted; 
148         da_g_hook_get g_hook_get; 
149         da_g_hook_find g_hook_find; 
150         da_g_hook_find_data g_hook_find_data; 
151         da_g_hook_find_func g_hook_find_func; 
152         da_g_hook_find_func_data g_hook_find_func_data; 
153         da_g_hook_first_valid g_hook_first_valid; 
154         da_g_hook_next_valid g_hook_next_valid; 
155         da_g_hook_compare_ids g_hook_compare_ids; 
156         da_g_hook_list_invoke g_hook_list_invoke; 
157         da_g_hook_list_invoke_check g_hook_list_invoke_check; 
158         da_g_hook_list_marshal g_hook_list_marshal; 
159         da_g_hook_list_marshal_check g_hook_list_marshal_check; 	
160     }
161 }